package com.hzy.fivepalace.db.service.base;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hzy.fivepalace.db.bean.DataPage;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 *
 * @author chen
 */
public interface BaseService<T> extends IService<T> {

	default T findById(Serializable id) {
		return getById(id);
	}


    /**
     * 根据map参数查询数量
     *
     * @param params
     * @return
     */
    long selectCountByMap(Map<String, Object> params);

	/**
	 * 根据一列值查询数量
	 * @param column
	 * @param value
	 * @return
	 */
	long selectCountByColumn(String column, Object value);

	List<T> selectListByColumn(String column, Object value);

    /**
     * 通过一列值查询
     * @return
     */
    List<T> selectByMap(Map<String, Object> params);

	/**
     * 通过一唯一列值查询唯一值
     *
     * @param column
     * @param value
     * @return
     */
    T selectByUniqueColumn(String column, Object value);

    /**
     * 查询表上所有数据
     *
     * @return
     */
    List<T> selectAllList();

	/**
	 * 查询表上所有数据
	 *
	 * @return
	 */
//	List<T> selectByPage(DataPage<T> condition);

	/**
	 * 查询下拉列表
	 *
	 * @param params
	 */
	default List<T> selectOptionsList(String params) {
		return this.selectOptionsList();
	}

	List<T> getPageEntityList(QueryWrapper queryWrapper, int pageNum, int pageSize);
	/**
	 * 查询下拉列表
	 */
	default List<T> selectOptionsList() {
		return this.selectAllList();
	}
}
